package bitclub;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import persistencia.PTrabajador;

/**
 * @author I.F.P. BitClub Company TM All rights reserved 
 */
public class Trabajador extends Persona {

    //Atributos de la clase
    private boolean administrador;
    private int id;

    public Trabajador(String nombre, String apellidos, String dni, boolean activo, String mail, String tel_fijo, String tel_movil, String direccion, String codigoPostal, String localidad, Date nacimiento, char sexo, Date fechaAlta, Date fechaBaja, String password, boolean administrador, int id) {
        super(nombre, apellidos, dni, activo, mail, tel_fijo, tel_movil, direccion, codigoPostal, localidad, nacimiento, sexo, fechaAlta, fechaBaja, password);
        this.administrador = administrador;
        this.id = id;
    }

    public Trabajador(String nombre, String apellidos, String dni, boolean activo, String mail, String tel_fijo, String tel_movil, String direccion, String codigoPostal, String localidad, Date nacimiento, char sexo, Date fechaAlta, Date fechaBaja, String password, boolean administrador) {
        super(nombre, apellidos, dni, activo, mail, tel_fijo, tel_movil, direccion, codigoPostal, localidad, nacimiento, sexo, fechaAlta, fechaBaja, password);
        this.administrador = administrador;
        this.id = -1;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public boolean isAdministrador() {
        return administrador;
    }

    public void setAdministrador(boolean administrador) {
        this.administrador = administrador;
    }

    @Override
    public String toString() {
        BitUtil.borra();
        // Presentación de resultados booleanos true and false mejorado -----
        String resp1 = "";//Para activo o no activo
        String resp2 = "";//Para administrador o no
        //Si el trabajador se encuentra ACTIVO O NO
        if (this.isActivo() == true) {
            resp1 = "ACTIVO";
        }
        if (this.isActivo() == false) {
            resp1 = "NO ACTIVO";
        }
        //Si el trabajador es Administrador o no lo es
        if (this.isAdministrador() == true) {
            resp2 = "PRIVILEGIOS DE ADMINISTRADOR";
        }
        if (this.isAdministrador() == false) {
            resp2 = "NO TIENE PRIVILEGIOS";
        }
        //              ------------------------------------------------------
        //Tres variables y tres métodos de la clase BitUtil
        String fecha_Nacimiento, fecha_Alta, fecha_Baja;
        //*****************
        if (this.getNacimiento() == null) {
            fecha_Nacimiento = " ";
        } else {
            fecha_Nacimiento = BitUtil.muestraFecha(this.getNacimiento());
        }
        //*****************
        if (this.getFechaAlta() == null) {
            fecha_Alta = " ";
        } else {
            fecha_Alta = BitUtil.muestraFecha(this.getFechaAlta());
        }
        //*****************
        if (this.getFechaBaja() == null) {
            fecha_Baja = " ";
        } else {
            fecha_Baja = BitUtil.muestraFecha(this.getFechaBaja());
        }

        // Conversión del carácter H&M a texto
        String sexo = "";
        char sex = this.getSexo();
        if (sex == 'h' || sex == 'H') {
            sexo = "Hombre";
        } else if (sex == 'm' || sex == 'M') {
            sexo = "Mujer";
        }
        // En esta variable vamos a concatenar todos los atributos de nuestro Trabajador
        String almacena_el_resultado = "";

        almacena_el_resultado += "----- ----- ----- ----- ----- ----- ----- ----- ----- ----- \n";
        almacena_el_resultado += "                    Nombre y apellidos: " + getNombre() + ", " + getApellidos() + "\n";
        almacena_el_resultado += "                    D.N.I.: " + getDni() + "\n";

        if (this.getId() != -1) {
            almacena_el_resultado += "ID: " + this.getId() + "\n";
        }

        almacena_el_resultado += "¿ACTIVO?: " + resp1 + "\n";
        almacena_el_resultado += "PERMISOS: " + resp2 + "\n";
        almacena_el_resultado += "E-mail: " + this.getMail() + "\n";
        almacena_el_resultado += "Teléfono fijo: " + this.getTel_fijo() + "\n";
        almacena_el_resultado += "Teléfono movil: " + this.getTel_movil() + "\n";
        almacena_el_resultado += "Domicilio: " + this.getDireccion() + "\n";
        almacena_el_resultado += "Codigo postal: " + getCodigoPostal() + "\n";
        almacena_el_resultado += "Localidad: " + getLocalidad() + "\n";
        almacena_el_resultado += "Fecha de nacimiento: " + fecha_Nacimiento + "\n";
        almacena_el_resultado += "S e x o: " + sexo + "\n";
        almacena_el_resultado += "Fecha de Alta: " + fecha_Alta + "\n";
        almacena_el_resultado += "Fecha de Baja: " + fecha_Baja + "\n";


        // DEVOLVEMOS LA CADENA COMPLETA
        return almacena_el_resultado;
    }

    public void nuevo() {
        PTrabajador.nuevoBD();

    }

    public void actualizar() {
        //Llamamos a la capa de persistencia. Paquete persistencia, Clase PTrabajador
        PTrabajador.actualizarBD(this);
    }

    public static Trabajador seleccionarPorDni(String dni) {
        Trabajador c;
        //Cuidado que esto debe llamar a la capa de persistencia
        PTrabajador.seleccionarPorDniBD();
        c = Prueba.dameTrabajador();
        return c;
    }

    public static List<Trabajador> seleccionarPorNombre(String nombre) {
        List<Trabajador> c = new ArrayList();
        PTrabajador.seleccionarPorNombreBD();
        c = Prueba.dameTrabajadores();
        return c;
    }
    
}
